#pragma once

#include <vector>
#include <memory>

#include "Network.h"
#include "../Neuron/RLSNeuron.h"
#include "../Math/TransferFunction/TransferFunctionBase.h"

class CRLSNetwork : public CNetworkBase
{
public:
	friend class CRLSLearn;

public:
	CRLSNetwork() = delete;

	CRLSNetwork(int inputDimension, int outputDimension);

public:
	virtual bool Save(const char * szFileName = nullptr);

	virtual bool Load(const char * szFileName = nullptr);

	virtual Vector Execute(Vector InputData);

public:
	int GetInputDimension();

	int GetOutputDimension();

private:
	int m_InputDimension;
	int m_OutputDimension;

	vector< shared_ptr<CRLSNeuron> > m_RLSNeuron;
};